The use of secondary storage systems to provide for online storage for a computer processing systems that is separate from the primary or main memory of the computer processing system is well known. Examples of current secondary storage systems include magnetic disk drives, optical disk drives, magnetic tape drives, solid state disk drives and bubble memories. Typically, secondary storage systems have much larger memory capacities than the primary memory of a computer processing system; however, the access to data stored on most secondary storage systems is sequential, not random, and the access rates for secondary storage systems can be significantly slower than the access rate for primary memory. As a result, individual bytes of data or characters of information are usually stored in a secondary storage system as part of a larger collective group of data known as a file.
In a distributed computer network environment, a user program can access both local files, i.e. files stored on secondary storage systems directly connected to the computer processor, as well as remote files, i.e., files stored on secondary storage systems that are accessed via a distributed network. As the popularity of distributed computer networks has increased, the demand to store ever increasing volumes of data as remote files has also increased. In response to this demand, a number of remote secondary storage systems have been developed primarily for the purpose of storing remote files. These secondary storage systems, known as data servers, file servers or information servers, are not connected to an individual computer like a traditional secondary storage device; rather they are connected to the distributed network itself. Examples of current large capacity data servers for a distributed computer network environment using the System V operating system program include: the UniTree.TM. Virtual Disk System available from General Atomics/DISCOS Division, San Diego, Calif.; the Epoch-1 Infinite Storage.TM. Server available from Epoch Systems, Inc., Westborough, Mass.; and the Auspex NS 5000.TM. Network Server available from Auspex Systems, Inc., Santa Clara, Calif.
While some network data servers like the UniTree.TM. Virtual Disk System are software-based packages implemented on a variety of traditional workstation platforms, most current network data servers utilize some type of specialized designed processor hardware that improves the performance and capacity of the networked secondary storage system. The most notable of these specialized hardware designs are the multiprocessor network data servers which have multiple processors operating in parallel in order to facilitate servicing more than one file request at a time. The Epoch-1 Infinite Storage.TM. Server, for example, uses a single board architecture having a single inter-processor bus with two processors, two SCSI interfaces and two LAN interfaces each with its own speed matching buffer, and a two-ported global memory accessible by both processors. The Auspex NS 5000.TM. Network Server uses a parallel processor architecture with multiple processors each having its own local memory and speed matching buffer, where all of the processors are connected together via a common backplane bus and a separate, common global memory board that is accessed via the common inter-processor bus. The parallel network file server architecture of the Auspex NS 5000.TM. Network Server is described in detail in U.S. Pat. No. 5,163,131, issued to Row et al.
The advantage of a multiprocessor network data server is that the work load for responding to remote file requests can be distributed over a number of processors working together, and in parallel, thereby theoretically increasing the overall performance of the network data server. Unfortunately, the current designs for multiprocessor network data servers sometimes do not achieve this theoretical increase in performance due to data transfer conflicts within the network data server. In the Auspex NS 5000.TM. Network Server as described in U.S. Pat. No. 5,163,131, for example, at least two transfers across the common bus are required in order to move a byte of data from a secondary storage device onto the network. As a result, the maximum transfer rate of the data server is necessarily less than one-half of the maximum effective data transfer rate of the common bus.
The use of a data transfer path that crosses a common bus connecting the multiple processors in the current multiprocessor network data servers can delay the parallel processing of other remote file requests which may also contending for the common bus. Obviously, one solution in the prior art is to provide for multiple data transfer paths in the form of multiple busses, as shown, for example, in U.S. Pat. No. 5,121,480, issued to Bonke et al. Such a solution, however, gives up the modular advantages of constructing the network data server using a common bus whereby additional processors can be easily added to the network data server merely by adding another processor to the common inter-processor bus. In addition, both the cost and complexity of providing for inter-processor communication via multiple busses increase significantly.
In addition to the problems caused by multiple internal transfers across a common bus, another problem with current multiprocessor network data servers is that the device controllers are not capable of simultaneous operation between both the secondary storage devices and the common bus. As a result, requests must be processed sequentially by the device controllers and the device controllers can be idled for significant periods of time waiting for operational responses from the secondary storage devices. One of the most problematic examples is the delay in waiting for the head positioning latency of a disk drive in response to a seek command. Again, multiple busses within the device controller would allow for such simultaneous operation; however, this solution necessarily increases both the cost and complexity of the device controller and, hence, of the network data server.
Although the use of multiple processors in current network data servers has increased the performance of such data servers, it would be advantageous to provide a network data server with an improved data transfer architecture that overcomes the disadvantages of current duplicate data path transfers, while at the same time retaining the advantages of using a common inter-processor bus for a multiprocessor network data server. It would also be advantageous to provide a multiprocessor network data server with an improved data transfer architecture within the device processor that would allow for multiplexed operation between the device processor and both the secondary storage devices and a common inter-processor bus.